# gevent : 遇到IO时会自动切换，属于主动式切换
import gevent
from gevent import monkey

# gevent.spawn()
# gevent.sleep()
# gevent.join()
# gevent.joinall()


def sing():
    print("sing")
    gevent.sleep(2)
    print("sing over")


def dance():
    print("dance")
    gevent.sleep(3)
    print("dance over")


if __name__ == "__main__":

    # 创建协程对象
    g0 = gevent.spawn(sing)
    g1 = gevent.spawn(dance)
    # 阻塞  等待协程对象执行结束
    g0.join()
    g1.join()

# 4.总结
#4.1线程是CPU调度的基本单位，进程是资源分配的基本单位
# #4.2 进程、线程和协程对比
#   进程:切换需要的资源最大，效率最低
#   线程:切换需要的资源一般，效率一般
#   协程:切换需要的资源最小，效率高
#4.3 多线程适合10密集型操作(文件作、爬虫)),多进程适合CPU密集型操作(科学及计算、对视频进行高清解码、计算圆周率
# 进程 线程 协程。都可以完成多任务，根据实际选择
